#!/usr/bin/env bash
# This file is part of MXE. See LICENSE.md for licensing information.

# cron job running on our DigitalOcean server fetching and uploading
# package tarballs to MXE Amazon S3 backup server.

# This also acts as a CI to file issue on GitHub if download fails.

# DigitalOcean server: mirror.mxe.cc
# IP: 104.131.71.203
# v6: 2604:a880:800:10::156:f001 2604:a880:800:10::1
#
# Admins: https://api.github.com/orgs/mxe/members
# Keys: https://github.com/<user>.keys or https://api.github.com/users/<user>/keys
#
# The script uses s3cmd to sync package tarballs:
# https://s3tools.org/s3cmd

# Manual switch to enable/disable issue filing on GitHub.
# Useful to prevent the same issue from being filed multiple times
file_issue=false

# List of plugin dirs to include in downloads
# Can't include all subdirs since some affect versions
plugin_dirs=`./tools/plugins-with-additional-packages.sh`

cd ~/mxe && git pull

# Test downloading without falling back to S3 download server.
# All log is stored in tmp-download-log.
if ! ( \
    cd ~/mxe && \
        make download -k MXE_NO_BACKUP_DL=true MXE_VERBOSE=true \
            MXE_PLUGIN_DIRS="$plugin_dirs" \
            CREATE_SUFFIXED_ARCHIVE=true \
            2>&1 >tmp-download-log \
) && $file_issue; then
    # If one or more download process fails, upload log to sprunge.us (a
    # pastebin-like text storage service). Store the returned URL in tmp-url.
    cat ~/mxe/tmp-download-log | curl -F 'sprunge=<-' http://sprunge.us \
        >~/mxe/tmp-url

    # Use a fake "editor" to format the issue
    EDITOR=~/mxe/tools/fake-editor ghi open -L bug -- mxe/mxe
fi

s3cmd sync \
    --acl-public \
    --no-check-md5 \
    --progress \
    --verbose \
    ~/mxe/pkg/ s3://mxe-pkg/
rm -rf ~/mxe/tmp-download-log ~/mxe/tmp-url ~/mxe/log
